﻿

function CalculateUtil(){
	this.exception = common.ObjectFactory.getInstance().getException();
}

//是否为空
CalculateUtil.isNull = function(value){
	if(value==null || value=="null" || value=="" || value=="undefined"){
		return true;
	}
	return false;
}

//获取当前日期
CalculateUtil.getCurrentDate = function(){
	var today = new Date();
	intYear=today.getYear();
	intMonth=today.getMonth()+1;
	if(intMonth<10){
		intMonth = "0" + intMonth;
	}
	intDay=today.getDate();
	if(intDay<10){
		intDay = "0" + intDay;
	}
	var d = intYear + "-" + intMonth + "-" + intDay;
	return d;
}

//是否整数或小数
CalculateUtil.isNumberAndPoint = function(str) {
	if(CalculateUtil.isNull(str)) return false;
	if(str.charAt(0)=='-') str = str.substr(1); 
	for(var i=0;i<str.length;i++){
		var temp = str.charAt(i);
		if( !( (temp>='0' && temp<='9') || temp=='.' ) ){
			return false;
		}
	}
	return true;
}
	
//是否整数
CalculateUtil.isNumber = function(str) {
	if(CalculateUtil.isNull(str)) return false;
	for(var i=0;i<str.length;i++){
		var temp = str.charAt(i);
		if( !( (temp>='0' && temp<='9')) ){
			return false;
		}
	}
	return true;
}
	
//是否boolean字符串
CalculateUtil.isBoolean = function(str){
	if("true"==str || "false"==str){
		return true;
	}else{
		return false;
	}
}
	
//将字符串转换成boolean值
CalculateUtil.getBoolean = function(str){
	if("true"==str) return true;
	else if("false"==str) return false;
	else{
		this.exception.throwException("CalculateUtil.getBoolean():不是boolean值");
		return false;
	}
}
	
//是否包含逻辑运算符号
CalculateUtil.isContainLogic = function(str){
	if(str.indexOf(">")!=-1 || str.indexOf("<")!=-1 || str.indexOf("!")!=-1 || str.indexOf("=")!=-1 || str.indexOf("|")!=-1 || str.indexOf("&")!=-1){
		return true;
	}
	return false;
}
CalculateUtil.isContainLogicOrBoolean = function(str){
	if(str.indexOf(">")!=-1 || str.indexOf("<")!=-1 || str.indexOf("!")!=-1 || str.indexOf("=")!=-1 || str.indexOf("|")!=-1 || str.indexOf("&")!=-1 || str.indexOf("true")!=-1 || str.indexOf("false")!=-1){
		return true;
	}
	return false;
}
	
//是否逻辑符号
CalculateUtil.isLogic = function(c){
	if(c=='>' || c=='<' || c=='!' || c=='=' || c=='|' || c=='&' ){
		return true;
	}
	return false;
}
	
//是否包含操作符
CalculateUtil.isContainOperator = function(str){
	if(str.indexOf("+")!=-1 || str.indexOf("-")!=-1 || str.indexOf("*")!=-1 || str.indexOf("/")!=-1){
		return true;
	}
	return false;
}
	
//是否包含操作符或括号
CalculateUtil.isContainOperatorOrBracket = function(str){
	if(str.indexOf("+")!=-1 || str.indexOf("-")!=-1 || str.indexOf("*")!=-1 || str.indexOf("/")!=-1 || str.indexOf("(")!=-1 || str.indexOf(")")!=-1){
		return true;
	}
	return false;
}
	
//是否操作符
CalculateUtil.isOperator = function(c){
	if(c=='+' || c=='-' || c=='*' || c=='/'){
		return true;
	}
	return false;
}
	
//是否操作符或括号
CalculateUtil.isOperatorOrBracket = function(c){
	if(c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')' ){
		return true;
	}
	return false;
}

CalculateUtil.QuickSort = function(arr) { //交换排序->快速排序
	if (arguments.length>1) {
		var low = arguments[1];
   		var high = arguments[2];
   	} else {
   		var low = 0;
   		var high = arr.length-1;
   	}
   	if(low < high){
	   	// function Partition
		var i = low;
	   	var j = high;
	   	var pivot = arr[i];
	   	while(i<j) {
	   		while(i<j && arr[j]>=pivot) j--;
	    	if(i<j) arr[i++] = arr[j];
	    	while(i<j && arr[i]<=pivot) i++;
	    	if(i<j) arr[j--] = arr[i];
		}
		arr[i] = pivot;
	   	// end function
		var pivotpos = i; //Partition(arr，low，high);
		CalculateUtil.QuickSort(arr, low, pivotpos-1);
		CalculateUtil.QuickSort(arr, pivotpos+1, high);
	} else return;
	return arr;
}
